package com.qqtech.qquan.push.service;

import java.util.List;
import java.util.Set;

import com.qqtech.core.frame.service.BaseService;
import com.qqtech.qquan.push.model.PushAudience;

public interface PushAudienceService extends BaseService<PushAudience> {
	/**
	 * 新增用户设备的推送注册id
	 * 
	 * @param registrationId
	 * @param userId
	 */
	void addNewAudience(String registrationId, Integer userId);

	/**
	 * 根据一组用户id获取对应的一组设备推送id
	 * 
	 * @param userIds
	 * @return
	 */
	List<String> getRegistrationIdsByUserIds(List<Integer> userIds);

	/**
	 * 根据用户id获取对应的设备推送id
	 * 
	 * @param userId
	 * @return
	 */
	String getRegistrationIdByUserId(Integer userId);

	/**
	 * 当用户加入或切入社区时，变更用户的推送标签和别名(以userId作为别名)
	 * 
	 * @param userId
	 *            用户id
	 * @param newCommunityId
	 *            新加入的社区，作为用户的新标签
	 * @param oldCommunityId
	 *            同时去除用户的旧社区标签
	 */
	void updateTagAlias(Integer userId, Integer newCommunityId, Integer oldCommunityId);

	/**
	 * 变更用户的推送标签和别名
	 * 
	 * @param userId
	 *            用户id
	 * @param alias
	 *            新别名
	 * @param tagsToAdd
	 *            新标签集合
	 * @param tagsToRemove
	 *            需要删除的旧标签集合
	 */
	void updateTagAlias(Integer userId, String alias, Set<String> tagsToAdd, Set<String> tagsToRemove);
}